Analytic functions are often performed to analyze data stored in relatively large input blocks. Programmers program various aspects of the analytic functions, such as when a Reader and a Writer are to advance as well as rules associated with buffering the data to be analyzed. One of the various rules includes programming when the data is to be stored on a disk (e.g., a hard-drive disk) instead of a memory (e.g., a random access memory (RAM)), such as when the distance between the Reader and the Writer exceeds a buffer size. Another of the various rules includes programming when the memory is to be released for the current batch of data. When the amount of data that is to be buffered is relatively large, as may occur under implementation of various analytic functions, the programming of the analytic functions is often relatively difficult and time consuming.